/**
 * 存放用户权限信息数据
 */
import {defineStore} from "pinia";
import {getUserInfo} from "@/api/index.js";
import router from "@/router/index.js";
import Qilin from "qilin-utils";

// 动态路由
// views下所有的.vue文件
const vueModules = import.meta.glob('../../views/**/*.vue');

export const getUserRoles = defineStore("roles",{
    state:()=>{
        return {
            initRoute:true, //是否初始化路由，在首次加载动态路由后须置为false，保证只执行一次
            userInfo:{}, //用户角色信息
            isSuperAdmin:false, //当前角色是否为超级管理员
            menuList:[] //用户可访问菜单数据
        }
    },
    getters:{
        // 获取用户信息
        getUserInfoData(){
            return {
                userInfo:this.userInfo,
                isSuperAdmin:this.isSuperAdmin
            }
        }
    },
    actions:{
        generateRoutes(){
            // 动态路由逻辑代码
            // const addRoute = (routeItem,name)=>{
            //     router.addRoute("home",{
            //         path:`/${name}`,
            //         name,
            //         component:vueModules[`../${routeItem.component}`],
            //         meta:{
            //             ...JSON.parse(routeItem.meta)
            //         },
            //         children:[]
            //     });
            //     if(routeItem.children && routeItem.children.length > 0){
            //         routeItem.children.forEach((item)=>addChildrenRoute(item,name,`/${name}`));
            //     }else{

            //     }
            // };
            // const addChildrenRoute = (childrenRouteItem,parentRouteName,parentRoutePath)=>{

            // };
            return new Promise((resolve,reject)=>{
                getUserInfo().then((res)=>{
                    if(res.code === 200){
                        router.push("/");
                        resolve();
                    }else{
                        ElMessage({
                            message:res.message || "系统错误",
                            type:"error"
                        });
                    }
                });
            });
        }
    },
    persist:{
        enabled:true,
        strategies:[
            {
                key:"roles",
                storage:sessionStorage,
                paths:["userInfo","isSuperAdmin","menuList"]
            }
        ]
    }
})
